package com.hundsun.cprs.yyt.service.quota.service;

import java.util.Map;

import com.hundsun.cprs.yyt.service.quota.domain.query.QuotaHoldQuery;
import com.hundsun.cprs.yyt.service.quota.domain.query.QuotaQuery;
import com.hundsun.cprs.yyt.service.quota.dto.QuotaHoldInfo;

/**
 * @author herong22384
 * @date 2019/8/5 17:12
 */
public interface QuotaHoldService {
    /**
     * 分页查询配额持仓情况
     * @param query
     * */
    void queryByPage(QuotaHoldQuery query);

    /**
     * 扣除配额
     * @param userId
     * @param quoteId 配额类型id
     * @param amount 配额变更数量
     * @param memo 配额变更描述
     * @param operatorType 操作类型
     */
    void deductQuota(Long userId,Long quoteId,Long amount,String operatorType,String memo);

    /**
     * 增加配额
     * @param userId
     * @param quoteId 配额类型id
     * @param amount 配额变更数量
     * @param memo 配额变更描述
     * @param operatorType 操作类型
     */
    void addQuota(Long userId,Long quoteId,Long amount,String operatorType,String memo);

    /**
     * 冻结配额
     * @param userId
     * @param quoteId 配额类型id
     * @param amount 配额变更数量
     * @param memo 配额变更描述
     * @param operatorType 操作类型
     * */
    void freezeQuote(Long userId,Long quoteId,Long amount,String operatorType,String memo);

    /**
     * 解冻配额
     * @param userId
     * @param quoteId 配额类型id
     * @param amount 配额变更数量
     * @param memo 配额变更描述
     * @param operatorType 操作类型
     * */
    void unfreezeQuote(Long userId,Long quoteId,Long amount,String operatorType,String memo);

    /**
     * 根据用户id和配额类型id查询配额持仓详情
     * @param userId
     * @param quoteId
     * */
    QuotaHoldInfo getQuoteHoldByUserAndQuoteId(Long userId, Long quoteId);
    
    QuotaHoldInfo sumRemainingQuotaByQuery(QuotaHoldQuery query);
}
